我正在编写一个队列处理应用程序,它使用线程来等待并响应要传递给应用程序的队列消息.对于应用程序的主要部分,它只需要保持活动状态.对于代码示例,例如:
while True: pass
要么
while True: time.sleep(1)
哪一个对系统的影响最小?什么是什么都不做,但保持python应用程序运行?
鉴于Python文档为Thread.run():
您可以在子类中覆盖此方法.标准的run()方法调用传递给对象构造函数的可调用对象作为目标参数(如果有),分别使用args和kwargs参数中的顺序和关键字参数.
我构造了以下代码:
class DestinationThread(threading.Thread):
def run(self, name, config):
print 'In thread'
thread = DestinationThread(args = (destination_name, destination_config))
thread.start()
Run Code Online (Sandbox Code Playgroud)
但是当我执行它时,我收到以下错误:
Exception in thread Thread-1:
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/threading.py", line 522, in __bootstrap_inner
self.run()
TypeError: run() takes exactly 3 arguments (1 given)
Run Code Online (Sandbox Code Playgroud)
我似乎错过了一些明显的东西,但我看到的各种例子都与这种方法有关.最终我试图将字符串和字典传递给线程,如果构造函数不是正确的方法,而是在启动线程之前创建一个新函数来设置值,我对此持开放态度.
有关如何最好地完成此任务的任何建议?
我计划将PHP应用程序移植到Python.该应用程序主要是关于数据收集和处理.主应用程序作为独立的命令行应用程序运行.应用程序有一个Web界面,它基本上是一个非常轻量级的报告界面.
我没有在PHP版本中使用框架,但是对Python不熟悉,我想知道使用像Django或者至少Genshi这样的东西是否有利.需要注意的是,我不希望我的应用程序分发被我需要随应用程序分发的框架部分所淹没.
在Python中只使用cgi导入是这种情况下的最佳方式吗?我倾向于认为一个框架开销太大,但也许我并没有以一种非常"蟒蛇"的方式思考它们.在这种情况下你有什么建议?
PHP的parse_url()有一个主机字段,其中包含完整的主机.我正在寻找最可靠(也是最便宜)的方式来返回域和TLD.
举个例子:
我只想找google.com或google.co.uk.我已经考虑了一个有效的TLD /后缀表,只允许这些和一个单词.你会以其他方式做吗?有没有人知道这种事情的预先有效的REGEX?
我正在研究一个需要嵌入HTTP服务器的守护进程.我正在尝试使用BaseHTTPServer,当我在前台运行它时,它工作正常,但是当我尝试将守护进程分叉到后台时,它会停止工作.我的主要应用程序继续工作,但BaseHTTPServer没有.
我相信这与BaseHTTPServer将日志数据发送到STDOUT和STDERR这一事实有关.我正在将它们重定向到文件.这是代码片段:
# Start the HTTP Server
server = HTTPServer((config['HTTPServer']['listen'],config['HTTPServer']['port']),HTTPHandler)
# Fork our process to detach if not told to stay in foreground
if options.foreground is False:
try:
pid = os.fork()
if pid > 0:
logging.info('Parent process ending.')
sys.exit(0)
except OSError, e:
sys.stderr.write("Could not fork: %d (%s)\n" % (e.errno, e.strerror))
sys.exit(1)
# Second fork to put into daemon mode
try:
pid = os.fork()
if pid > 0:
# exit from second parent, print eventual PID before
print 'Daemon has started …Run Code Online (Sandbox Code Playgroud) 在思考代码的优化时,我想知道哪些在python中更贵:
if x:
d = 1
else:
d = 2
Run Code Online (Sandbox Code Playgroud)
要么
d = 2
if x:
d = 1
Run Code Online (Sandbox Code Playgroud)
有什么想法吗?我喜欢第二次减少的行数,但想知道重新分配是否比条件切换更昂贵.