- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
操作系统:Windows 10(主机)
中央处理器:8
python :3.6.6
游戏版本:1.9.4
“构建器”:cx_Freeze 版本 5.1.1
操作系统:Ubuntu 14.04( guest ,虚拟机)
中央处理器:4
python :3.6.6
游戏版本:1.9.4
“构建器”:cx_Freeze 版本 5.1.1
import asyncio
import pygame
import multiprocessing
from concurrent.futures import ProcessPoolExecutor
from concurrent.futures import ThreadPoolExecutor
def init():
pygame.init()
screen = pygame.display.set_mode((900, 700), pygame.RESIZABLE)
clock = pygame.time.Clock()
return screen, clock
def fast_cpu_blocked():
print("blocked is run")
i = 1
while 1:
i += 1
if i > 100000000:
print("blocked is finished")
return i
executor_threads = ThreadPoolExecutor(multiprocessing.cpu_count())
executor_processes = ProcessPoolExecutor(multiprocessing.cpu_count())
async def start():
loop = asyncio.get_event_loop()
cpu_run = False
screen, clock = init()
while 1:
await loop.run_in_executor(None, clock.tick, 60)
screen.fill((0, 0, 0))
txt_surface = pygame.font.Font(None, 18).render(
"FPS: {}".format(int(clock.get_fps())), True, pygame.Color('grey'))
screen.blit(txt_surface, (0, 0))
pygame.display.flip()
if not cpu_run:
print("RUN CPU TASK")
cpu_run = True
loop.run_in_executor(executor_processes, fast_cpu_blocked)
print("FINISH CPU TASK")
if __name__ == "__main__":
loop = asyncio.get_event_loop()
loop.run_until_complete(start())
当 loop.run_in_executor(executor_processes, fast_cpu_blocked)
被执行时,它会产生多个应用程序窗口(只是黑色窗口,没有任何呈现的上下文)。
当使用 executor_threads
而不是 executor_processes
时,不会发生这种情况。但无论如何,我需要 executor_processes
,所以这是事实。
pygame 1.9.4
Hello from the pygame community. https://www.pygame.org/contribute.html
RUN CPU TASK
FINISH CPU TASK
pygame 1.9.4
Hello from the pygame community. https://www.pygame.org/contribute.html
blocked is run
pygame 1.9.4
Hello from the pygame community. https://www.pygame.org/contribute.html
pygame 1.9.4
Hello from the pygame community. https://www.pygame.org/contribute.html
pygame 1.9.4
Hello from the pygame community. https://www.pygame.org/contribute.html
pygame 1.9.4
Hello from the pygame community. https://www.pygame.org/contribute.html
pygame 1.9.4
Hello from the pygame community. https://www.pygame.org/contribute.html
pygame 1.9.4
Hello from the pygame community. https://www.pygame.org/contribute.html
pygame 1.9.4
Hello from the pygame community. https://www.pygame.org/contribute.html
blocked is finished
pygame 1.9.4
Hello from the pygame community. https://www.pygame.org/contribute.html
RUN CPU TASK
FINISH CPU TASK
blocked is run
blocked is finished
如何修复/避免/破解在 Windows 系统上生成多个窗口。
为什么会这样?
最佳答案
使用 cx_Freeze 为 Windows 创建 exe 时并使用某种形式的多处理(例如 multiprocessing
或 concurrent.futures.ProcessPoolExecutor
你需要引导你的 exe 进行多处理,这是你做的第一件事。您只需调用 multiprocessing.freeze_support()
作为 if __name__ == "__main__":
block 中的第一件事即可完成此操作。
关于python - 游戏。 Windows 10。使用 ProcessPoolExecutor 在 loop.run_in_executor 之后创建额外的窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52519568/
python ProcessPoolExecutor 在命令行中工作,但添加到函数后不运行 它是这样工作的 from concurrent import futures def multi_proce
如果父进程因任何原因终止,有没有办法使 concurrent.futures.ProcessPoolExecutor 中的进程终止? 一些细节:我在处理大量数据的作业中使用 ProcessPoolEx
这是我关于 stackoverflow 的第一个问题。我基本上能够在这里找到我需要知道的东西。顺便说一句,非常感谢。 但是。如果我尝试终止我的 ProcessPoolExecutor,它只会在生成的整
我有一个代码,它从 gstorage 下载文件,将它们转储到 json,然后将该 json 转为 csv,然后转为 parquet,最后上传到 aws s3(不要问为什么我不是写它的人)。 我从我的日
ESPNP 播放器免费 class ESPNPlayerFree: def __init__(self, player_id, match_id, match_id_team): ... 团队列表1:
在本文档 ( https://pymotw.com/3/concurrent.futures/ ) 中说: “ProcessPoolExecutor 的工作方式与 ThreadPoolExecutor
我正在创建一个多处理程序来处理多个批处理,但我的日志记录无法将批处理记录到日志文件中,只会记录根 log.info,如何设置日志记录以正确打印到日志文件? 日志只会打印这样一行"INFO:root:t
我正在尝试使用一个单独的进程通过并发 future 流式传输数据。然而,另一方面,有时对方会停止数据馈送。但只要我重新启动这个 threadable 然后它就会再次工作。所以我设计了这样的东西,以便能
设置 我设置了一个函数来接收多个关键字参数: def process(image, folder, param1, param2, param3): do_things return
from concurrent.futures import ProcessPoolExecutor import os import time def parInnerLoop(item):
python 3.6.6 这是代码: import asyncio import time from concurrent.futures import ProcessPoolExecutor exe
我是一般并行化的新手,特别是 concurrent.futures。我想对我的脚本进行基准测试并比较使用线程和进程之间的差异,但我发现我什至无法运行它,因为在使用 ProcessPoolExecuto
代码: if __name__ == "__main__": p = ProcessPoolExecutor() p.submit(lambda x: print(x), "somet
代码: if __name__ == "__main__": p = ProcessPoolExecutor() p.submit(lambda x: print(x), "somet
我想在多进程环境中记录到单个文件。我可以得到 sample code从 python 日志记录手册开始工作。但是当我替换为 ProcessPoolExecutor 时,它不起作用。 # work
我正在尝试使用新的 Tornado queue对象以及 concurrent.futures允许我的网络服务器将 CPU 密集型任务传递给其他进程。我想访问从 concurrent.futures 模
我有一个 python 函数正在调用我无法控制或更新的 C 库。不幸的是,C 库存在间歇性错误,有时会挂起。为了防止我的应用程序也挂起,我尝试隔离 ThreadPoolExecutor 或 Proce
我最近开始使用 Python 的多线程和多处理功能。 我尝试编写代码,使用生产者/消费者方法从 JSON 日志文件中读取 block ,将这些 block 作为事件写入队列,然后启动一组将从该队列中轮
我有一大堆必须以某种方式处理的元素。我知道可以通过以下方式使用多处理过程来完成: pr1 = Process(calculation_function, (args, )) pr1.start() p
if __name__ == '__main__': MATCH_ID = str(doc_ref2.id) MATCH_ID_TEAM = doc_ref3.id with
我是一名优秀的程序员,十分优秀!