Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在windows asyncio上与python并行运行进程_Python_Python 3.x_Multithreading_Python Asyncio - Fatal编程技术网

在windows asyncio上与python并行运行进程

在windows asyncio上与python并行运行进程,python,python-3.x,multithreading,python-asyncio,Python,Python 3.x,Multithreading,Python Asyncio,我有一个只在Linux和asyncio上运行的代码,但我需要它在Windows上运行,我对多处理知之甚少,在Windows上运行的方法是什么?我发现在windows上运行asyncio有一个限制: 我的代码: import sys import asyncio scriptspy = [ 'scrp1.py', 'scrp2.py', 'scrp3.py', 'scrp4.py', 'scrp5.py', 'scrp6.py', 'sc

我有一个只在Linux和asyncio上运行的代码,但我需要它在Windows上运行,我对多处理知之甚少,在Windows上运行的方法是什么?我发现在windows上运行asyncio有一个限制:

我的代码:

import sys
import asyncio


scriptspy = [
    'scrp1.py',
    'scrp2.py',
    'scrp3.py',
    'scrp4.py',
    'scrp5.py',
    'scrp6.py',
    'scrp7.py',
    'scrp8.py',
    'scrp9.py',
    'scrp10.py',
    'scrp11.py',
    'scrp12.py',
]

async def main():
    tarefas_rodando = set()
    while scriptspy:
        # start up to 6 scripts
        while len(tarefas_rodando) < 6 and scriptspy:
            script = scriptspy.pop()
            p = await asyncio.create_subprocess_exec(sys.executable, script)
            tarefa = asyncio.create_task(p.wait())
            tarefas_rodando.add(tarefa)
        # wait for one of the scripts to end
        tarefas_rodando, finalizadas = await asyncio.wait(tarefas_rodando, return_when=asyncio.FIRST_COMPLETED)
    # finished, wait for the rest to finish
    await asyncio.wait(tarefas_rodando, return_when=asyncio.ALL_COMPLETED)


asyncio.run(main())
导入系统 导入异步 scriptspy=[ “scrp1.py”, “scrp2.py”, “scrp3.py”, “scrp4.py”, “scrp5.py”, “scrp6.py”, “scrp7.py”, “scrp8.py”, “scrp9.py”, “scrp10.py”, “scrp11.py”, “scrp12.py”, ] 异步def main(): tarefas_rodando=set() 而scriptspy: #最多启动6个脚本 而len(tarefas_rodando)<6和scriptspy: script=scriptspy.pop() p=wait asyncio.create_subprocess_exec(sys.executable,script) tarefa=asyncio.create_任务(p.wait()) tarefas_rodando.add(tarefa) #等待其中一个脚本结束 tarefas\u rodando,finalizadas=wait asyncio.wait(tarefas\u rodando,在=asyncio.FIRST\u完成时返回) #完成,等待其余的完成 wait asyncio.wait(tarefas\u rodando,当=asyncio.ALL\u完成时返回) asyncio.run(main()) 此代码在linux上运行良好,但在windows上运行不好。我需要在windows上运行它

在Windows中运行异常:

Traceback (most recent call last):
   File "scripts.py", line 53, in <module>
    asyncio.run(main())
   File "C:\Python\Python37\lib\asyncio\runners.py", line 43, in run
    return loop.run_until_complete(main)
   File "C:\Python\Python37\lib\asyncio\base_events.py", line 584, in run_until_complete
    return future.result()
   File "scripts.py", line 44, in main
    p = await asyncio.create_subprocess_exec(sys.executable, script)
   File "C:\Python\Python37\lib\asyncio\subprocess.py", line 217, in create_subprocess_exec
    stderr=stderr, **kwds)
   File "C:\Python\Python37\lib\asyncio\base_events.py", line 1533, in subprocess_exec
    bufsize, **kwargs)
   File "C:\Python\Python37\lib\asyncio\base_events.py", line 463, in
_make_subprocess_transport
    raise NotImplementedError NotImplementedError
回溯(最近一次呼叫最后一次):
文件“scripts.py”,第53行,在
asyncio.run(main())
文件“C:\Python\Python37\lib\asyncio\runners.py”,第43行,正在运行
返回循环。运行直到完成(主)
文件“C:\Python\Python37\lib\asyncio\base\u events.py”,第584行,在运行中直到完成
返回future.result()
文件“scripts.py”,第44行,主
p=wait asyncio.create_subprocess_exec(sys.executable,script)
文件“C:\Python\Python37\lib\asyncio\subprocess.py”,第217行,在create\u subprocess\u exec中
标准差=标准差,**千瓦时)
文件“C:\Python\Python37\lib\asyncio\base\u events.py”,第1533行,在subprocess\u exec中
bufsize,**夸克)
文件“C:\Python\Python37\lib\asyncio\base\u events.py”,第463行,在
_使_子流程_传输
引发NotImplementedError NotImplementedError
根据,要在Windows上运行子流程,需要切换到proactor事件循环:

asyncio.set_event_loop_policy(asyncio.WindowsProactorEventLoopPolicy())

在Windows上运行时会发生什么?你有例外吗?如果是,哪一个?是的,添加有问题的例外@user4815162342@JB_为什么不呢?你能说得更具体点吗?我的英语不好。我的意思是我不能实现我的文档中包含的这段代码。@JB\u您只需要将这段代码粘贴到程序的开头。如果这对您不起作用,请提供详细信息。