所以我过去几天一直在搞乱python的多处理库,我真的很喜欢处理池.它易于实现,我可以想象很多用途.我之前已经完成了几个我已经听过的项目以熟悉它,并且最近完成了一个蛮力游戏的程序.
Anywho,我正在执行一个执行时间计算,总结100万到200万单线程和处理池之间的所有素数.现在,对于hangman cruncher来说,将游戏放入处理池可以将执行时间提高大约8倍(i7有8个核心),但是当研究出这些素数时,它实际上将处理时间增加了近4倍.
谁能告诉我为什么会这样?以下是有兴趣查看或测试它的人的代码:
#!/user/bin/python.exe
import math
from multiprocessing import Pool
global primes
primes = []
def log(result):
global primes
if result:
primes.append(result[1])
def isPrime( n ):
if n < 2:
return False
if n == 2:
return True, n
max = int(math.ceil(math.sqrt(n)))
i = 2
while i <= max:
if n % i == 0:
return False
i += 1
return True, n
def main():
global primes
#pool = Pool()
for i in range(1000000, 2000000): …Run Code Online (Sandbox Code Playgroud) 我正在梳理我的一般编程技巧,我遇到了一个问题.我正在写一个模拟bunnys殖民地的程序.一旦该程序启动它就是自主的,但是,在任何时候用户都应该能够按下"k"键来剔除一半的人口.如果不暂停程序等待用户输入,我想不出这样做的方法.我也无法想出一种方法来使程序立即响应(程序使用sleep命令半实时运行).有没有办法在没有多跋涉和多年经验的情况下实现这一目标?
所以我在写命令行实用程序,却遇到了一个我很好奇的问题。
该实用程序可以使用文件参数调用,也可以从中读取sys.stdin。本来我是sys.stdin.isatty()想弄清楚是否正在传输数据,但是,我发现,即使没有实际数据传输,如果我通过远程调用该实用程序ssh server utility,sys.stdin.isatty()也会返回false。
作为一种解决方法,我将其-用作文件参数以强制从stdin中进行读取(例如:)echo "data_here" | utility -f -,但我很好奇是否有可靠的方法来区分从进程获取数据的管道与仅从管道获取数据的管道之间的区别打开,因为调用是通过ssh进行的。
系统编程不是我的专长,因此,我感谢你们能提供的任何帮助。