ipython控制台_Windows机器上的IPython控制台中的多处理 – ...

我在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__”声明,如何在不将其置于此处的情况下运行多处理功能?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值