jupyter输入,显示,打印执行顺序是混乱的

时间:2018-01-11 01:41:57

标签: python pandas output jupyter-notebook

我正在使用jupyter而我的python版本是3.5。在while循环中,执行顺序不正确,输入语句在print语句之前。这是我的代码。

var JSONurl = "http://coincap.io/page/XRP"

document.getElementById("dropdown-btc").addEventListener("click", function(){
    changeCoin("btc");
});

document.getElementById("dropdown-eth").addEventListener("click", function(){
    changeCoin("eth");
});

document.getElementById("dropdown-xrp").addEventListener("click", function(){
    changeCoin("xrp");
});



$( document ).ready(function () {
    console.log( "ready!" );


  $(function getRippleVals() {
      console.log("");
      $.getJSON(JSONurl,
              function (data) {

              //... extra function methods are here, not relevant to the problem.


          });
      setTimeout(getRippleVals, 5000);
      });
});



function changeCoin(coin){
  console.log(coin);
  var coin = coin.toUpperCase();
  $("#dropdownMenuButton").html(coin);

  if(coin === "BTC")
  {
    JSONurl = "http://coincap.io/page/BTC";
    $("#pairing-text").html("BTC : USD");
    lastPrice = 0;
  }
  else if(coin === "ETH")
  {
    JSONurl = "http://coincap.io/page/ETH";
    $("#pairing-text").html("ETH : USD");
    lastPrice = 0;
  }
  else if(coin === "XRP")
  {
    JSONurl = "http://coincap.io/page/XRP";
    $("#pairing-text").html("XRP : USD");
    lastPrice = 0;
  }

}

执行结果是 enter image description here

2 个答案:

答案 0 :(得分:2)

我能够在OSX上重现Chrome 63下的行为。我添加了几个连续的print(a)语句,输入字段最终的位置是随机的:在它们之前,在它们之后或之间。我怀疑是每个显示和打印调用都向服务器发送请求,但异步等待其结果,以便在input的结果准备就绪之前再次调用print(a)

这不是一个优雅的解决方案,但在time.sleep(.02)之后添加一个小睡眠(print(a))可以解决我的问题。

答案 1 :(得分:1)

这是一个众所周知的Jupyter问题:

https://github.com/jupyter/notebook/issues/3159