本文共 1745 字,大约阅读时间需要 5 分钟。
以前刚学Python的时候就用过Python自带的那个库,2to3,记得当时没成功,今天练习tornado的时候时候又碰到2转3的问题,又尝试了下,发现还挺简单的。。。
Python2 asr.py文件的代码:
#asy.pyimport timeimport threaddef long_io(callback): """将耗时的操作交给另一线程来处理""" def fun(cb): # 回调函数作为参数 """耗时操作""" print "开始执行IO操作" time.sleep(5) print "完成IO操作,并执行回调函数" cb("io result") # 执行回调函数 thread.start_new_thread(fun, (callback,)) # 开启线程执行耗时操作def on_finish(ret): """回调函数""" print "开始执行回调函数on_finish" print "ret: %s" % ret print "完成执行回调函数on_finish"def req_a(): print "开始处理请求req_a" long_io(on_finish) print "离开处理请求req_a"def req_b(): print "开始处理请求req_b" time.sleep(2) # 添加此句来突出显示程序执行的过程 print "完成处理请求req_b"def main(): req_a() req_b() while 1: # 添加此句防止程序退出,保证线程可以执行完 passif __name__ == '__main__': main()
在pycharm终端执行:
2to3 -w asy.py
-w 是直接覆盖源文件,然后会生成一个asy.py.bak的备份文件,
执行后的结果代码就变成Python3语法的了:
import timeimport _threaddef long_io(callback): """将耗时的操作交给另一线程来处理""" def fun(cb): # 回调函数作为参数 """耗时操作""" print("开始执行IO操作") time.sleep(5) print("完成IO操作,并执行回调函数") cb("io result") # 执行回调函数 _thread.start_new_thread(fun, (callback,)) # 开启线程执行耗时操作def on_finish(ret): """回调函数""" print("开始执行回调函数on_finish") print("ret: %s" % ret) print("完成执行回调函数on_finish")def req_a(): print("开始处理请求req_a") long_io(on_finish) print("离开处理请求req_a")def req_b(): print("开始处理请求req_b") time.sleep(2) # 添加此句来突出显示程序执行的过程 print("完成处理请求req_b")def main(): req_a() req_b() while 1: # 添加此句防止程序退出,保证线程可以执行完 passif __name__ == '__main__': main()
不过感觉这个标准库也就处理一下print这种简答的语法转换,我再换一个腾讯实时转写的接口代码就不行了,虽然也对urlib做了转换,但还是需要手动改一些。
不过能转print也方便不少了
ps:想吐槽Python2和Python3的兼容!
pps:详细内容请看官方文档,已经有中文的官方文档了!虽然还不太全
转载地址:http://ldxws.baihongyu.com/