Windows机器上的IPython控制台中的多处理 – 如果__name_要求
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Windows机器上的IPython控制台中的多处理 – 如果__name_要求,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2401字,纯文字阅读大概需要4分钟。
内容图文
![Windows机器上的IPython控制台中的多处理 – 如果__name_要求](/upload/InfoBanner/zyjiaocheng/951/3676455630cf4747bd43cd8762467c25.jpg)
我在Windows机器上使用IPython和Spyder IDE. IDE启动时,会加载一组py文件来定义一些使我的工作更容易的函数.一切都按预期工作.
现在我想升级其中一个函数以使用多处理,但在Windows上这需要if __name__ ==“__ main__”:语句.所以我似乎无法直接调用该函数并从IPython控制台传递参数.
例如,其中一个py文件(我们称之为test.py)可能类似于以下代码.
import multiprocessing as mp
import random
import string
# define a example function
def rand_string(length, output):
""" Generates a random string of numbers, lower- and uppercase chars. """
rand_str = ''.join(random.choice(
string.ascii_lowercase
+ string.ascii_uppercase
+ string.digits)
for i in range(length))
output.put(rand_str)
def myFunction():
# Define an output queue
output = mp.Queue()
# Setup a list of processes that we want to run
processes = [mp.Process(target=rand_string, args=(5, output)) for x in range(4)]
# Run processes
for p in processes:
p.start()
# Exit the completed processes
for p in processes:
p.join()
# Get process results from the output queue
results = [output.get() for p in processes]
print(results)
在我的IPython控制台中,我想使用该行
myFunction()
触发所有计算.但在Windows上最终会出现BrokenPipe错误.
当我放
if __name__ == "__main__":
myFunction()
在py文件的末尾并运行完整的文件
runfile(test.py)
有用.当然.但这使得很难将参数传递给函数,因为我总是要编辑test.py文件本身.
我的问题是:如果__name__ ==“__ main__”声明,如何在不将其置于此处的情况下运行多处理功能?
解决方法:
如果不运行if __name__ ==’__ main__’,多处理将无法工作.
但是,您可以使用多处理分支,它实质上利用dill将解释器会话视为文件…(简而言之,它可以工作).
Python 2.7.9 (default, Dec 11 2014, 01:21:43)
Type "copyright", "credits" or "license" for more information.
IPython 3.0.0 -- An enhanced Interactive Python.
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object', use 'object??' for extra details.
In [1]: from pathos.multiprocessing import ProcessingPool as Pool
In [2]: def squared(x):
...: return x**2
...:
In [3]: x = range(10)
In [4]: p = Pool()
In [5]: p.map(squared, x)
Out[5]: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
In [6]: res = p.imap(squared, x)
In [7]: list(res)
Out[7]: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
In [8]:
您也可以使用由dill序列化程序增强的内置多处理程序,或者您可以使用Pool().apipe构建一个Queue,其中任何一个都更像您似乎对Queue感兴趣的内容.
获取悲情:https://github.com/uqfoundation
内容总结
以上是互联网集市为您收集整理的Windows机器上的IPython控制台中的多处理 – 如果__name_要求全部内容,希望文章能够帮你解决Windows机器上的IPython控制台中的多处理 – 如果__name_要求所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。